package com.yupi.yupicturebackend.model.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;

/**
 * 推荐日志实体
 *
 * @author yupi
 */
@TableName(value = "recommendation_log")
@Data
public class RecommendationLog implements Serializable {

    /**
     * 主键ID
     */
    @TableId(type = IdType.ASSIGN_ID)
    private Long id;

    /**
     * 用户ID
     */
    private Long userId;

    /**
     * 推荐类型 (collaborative, content_based, deep_learning, trending, hybrid)
     */
    private String recommendationType;

    /**
     * 推荐算法
     */
    private String algorithm;

    /**
     * 推荐场景 (homepage, search, detail, category)
     */
    private String scene;

    /**
     * 推荐物品ID列表 (JSON格式)
     */
    private String recommendedItems;

    /**
     * 推荐物品数量
     */
    private Integer itemCount;

    /**
     * 推荐分数列表 (JSON格式)
     */
    private String scores;

    /**
     * 推荐原因 (JSON格式)
     */
    private String reasons;

    /**
     * 用户特征向量 (JSON格式)
     */
    private String userFeatures;

    /**
     * 推荐参数 (JSON格式)
     */
    private String recommendParams;

    /**
     * 推荐耗时（毫秒）
     */
    private Long processingTime;

    /**
     * 点击的物品ID列表 (JSON格式)
     */
    private String clickedItems;

    /**
     * 点击率
     */
    private Double clickRate;

    /**
     * 转化率
     */
    private Double conversionRate;

    /**
     * 用户反馈 (like, dislike, neutral)
     */
    private String userFeedback;

    /**
     * 推荐质量评分
     */
    private Double qualityScore;

    /**
     * 多样性分数
     */
    private Double diversityScore;

    /**
     * 新颖性分数
     */
    private Double noveltyScore;

    /**
     * 创建时间
     */
    private Date createTime;

    /**
     * 更新时间
     */
    private Date updateTime;

    /**
     * 是否删除
     */
    @TableLogic
    private Integer isDelete;

    @TableField(exist = false)
    private static final long serialVersionUID = 1L;
}
